package persistance.dal;

import java.sql.PreparedStatement;
import java.sql.SQLException;
import ucc.objects.CompteUtilisateurDTO;
import exception.DataAccesException;

public class CompteUtilisateurPersisterImpl implements
		CompteUtilisateurPersister {

	private PreparedStatement queryInsert;
	private PreparedStatement queryUpdate;
	private static final String INSERT = "insert into caisse.comptes_utilisateurs (nom_utilisateur, "
			+ "mot_de_passe, id_fonction, nom, prenom, telephone)"
			+ "values (?, ?, ?, ?, ?, ?)";
	private static final String UPDATE = "update caisse.comptes_utilisateurs set "
			+ "mot_de_passe=?, id_fonction=?, nom=?, prenom=?, telephone=? "
			+ "where nom_utilisateur=?";

	public CompteUtilisateurPersisterImpl() {
		this.queryInsert = DalBackEndServices.INSTANCE.prepare(INSERT);
		this.queryUpdate = DalBackEndServices.INSTANCE.prepare(UPDATE);
	}

	public void insert(CompteUtilisateurDTO compteUtilisateur) {
		try {
			queryInsert.setString(1, compteUtilisateur.getNomDUtilisateur());
			queryInsert.setString(2, compteUtilisateur.getMotDePasse());
			queryInsert.setInt(3, compteUtilisateur.getFonction().getId());
			queryInsert.setString(4, compteUtilisateur.getNom());
			queryInsert.setString(5, compteUtilisateur.getPrenom());
			queryInsert.setString(6, compteUtilisateur.getTelephone());
			queryInsert.execute();
		} catch (SQLException sqlE) {
			sqlE.printStackTrace();
			throw new DataAccesException(
					"SQL/JDBC Connection, Statement, executeQuery problem \n",
					sqlE);
		}
	}

	public void update(CompteUtilisateurDTO compteUtilisateur) {
		try {
			queryUpdate.setString(1, compteUtilisateur.getMotDePasse());
			queryUpdate.setInt(2, compteUtilisateur.getFonction().getId());
			queryUpdate.setString(3, compteUtilisateur.getNom());
			queryUpdate.setString(4, compteUtilisateur.getPrenom());
			queryUpdate.setString(5, compteUtilisateur.getTelephone());
			queryUpdate.setString(6, compteUtilisateur.getNomDUtilisateur());
			queryUpdate.execute();
		} catch (SQLException sqlE) {
			sqlE.printStackTrace();
			throw new DataAccesException(
					"SQL/JDBC Connection, Statement, executeQuery problem \n",
					sqlE);
		}
	}
}
